;:sys36864 ;.opt oo *= 50000 tmp =247 latch =820 mem =704 bul =204 jmp help jmp inform jmp swap jmp generate jmp fread jmp eval jmp hunt jmp using jmp search jmp varmem jmp memvar jmp number jmp replace jmp insert jmp sort kofi jsr $aefd jmp $b08b stack =663 het .byt 13,13 .byte "string-utility von nikolaus heusler" .byt 13,13 .byte "ver. 1, 07.92" .byt 13,13 .byt 13 .byte "sys 50000 hilfe" .byt 13 .byte "sys 50003 inform" .byt 13 .byte "sys 50006 swap" .byt 13 .byte "sys 50009 generate" .byt 13 .byte "sys 50012 input file" .byt 13 .byte "sys 50015 eval" .byt 13 .byte "sys 50018 string-suche" .byt 13 .byte "sys 50021 using" .byt 13 .byte "sys 50024 array-suche" .byt 13 .byte "sys 50027 varmem" brk he2 .byt 13 .byte "sys 50030 memvar" .byt 13 .byte "sys 50033 number" .byt 13 .byte "sys 50036 ersetzen" .byt 13 .byte "sys 50039 einsetzen" .byt 13 .byte "sys 50042 sortieren" .byt 13,13,0 delt .byte "\x9d \x9d" brk help lda #het jsr $ab1e lda #he2 jmp $ab1e lenst jsr $b7f1 stx tmp+1 txa beq qill strg jsr kofi sta $49 sty $4a jmp $b6a3 qill jmp $b248 makest sta tmp jsr prepst settxt cpy tmp beq carried lda latch,y sta ($62),y iny bne settxt carried rts prepst jsr $b475 ldy #2 prst lda $61,y sta ($49),y dey bpl prst iny rts numvar jsr kofi sta $49 sty $4a lda #mem jsr $bba2 lda $d bpl typok jmp $ad99 typok lda $e jmp $a9c2 axfac stx $63 sta $62 ldx #$90 sec jsr $bc49 varnum ldx #mem jmp $bbd4 pgetfre jsr $b3a6 getfre jsr $aefd jsr $ad9e jsr $b6a3 tay rts inform jsr lenst ldx #0 stx tmp keylp lda #0 sta $cc wk jsr 65508 beq wk ldx #1 stx $cd wx ldx $cf bne wx inc $cc cmp #13 bne tec lda tmp jsr makest jmp $aad7 tec cmp #20 beq del cmp #32 bcc keylp cmp #128 bcc ok cmp #160 bcc keylp ok ldx tmp cpx tmp+1 bcs keylp sta latch,x jsr $ffd2 lda #0 sta 212 inc tmp bne keylp del ldx tmp beq keylp lda #delt jsr $ab1e dec tmp jmp keylp swap jsr $aefd jsr $ad9e jsr $ad8f lda 100 sta tmp lda 101 sta tmp+1 jsr $aefd jsr $ad9e jsr $ad8f ldy #2 coppr lda (tmp),y tax lda (100),y sta (tmp),y txa sta (100),y dey bpl coppr rts generate jsr lenst jsr $aefd jsr $ad9e bit $d bmi str jsr $b1aa lda $64 bne ill lda $65 sta mem lda #mem sta 34 sty 35 lda #1 bne strr str jsr $b782 beq ill strr sta tmp ldx #0 make ldy #0 mke lda (34),y sta latch,x inx cpx #bul bcs tool iny cpy tmp bcc mke dec tmp+1 bne make txa jmp makest ill jmp $b248 tool jmp $a571 fread jsr $b7f1 jsr $e11e jsr lenst lda tmp+1 jsr $b475 ldy #2 sto lda $61,y sta ($49),y dey bpl sto iny fetch jsr $e112 sta ($62),y iny cpy tmp+1 bcc fetch jmp $ffcc eval ldx #90 save lda $200,x sta 820,x dex bpl save jsr getfre beq ill lda #0 ev1 sta $200,y dey cpy #-1 beq ev2 lda (34),y beq ill bne ev1 ev2 lda 122 pha lda 123 pha lda #0 sta 144 sta 122 lda #2 sta 123 jsr $a579 jsr 115 tsx stx stack lda #neuerr sta 768 sty 769 jsr $ad8a weiter jsr varnum ldx stack txs lda #139 ldy #227 sta 768 sty 769 pla sta 123 pla sta 122 ldx #90 resume lda 820,x sta $200,x dex bpl resume jmp numvar neuerr stx 144 jsr $b8f7 jmp weiter hunt jsr pgetfre sta tmp+2 lda 34 ldy 35 sta tmp sty tmp+1 jsr getfre beq illq sta tmp+5 lda #0 sta tmp+3 hu1 ldy #0 sty tmp+4 lda tmp+3 sta tmp+6 hu2 ldy tmp+6 cpy tmp+2 bcs zero lda (tmp),y ldy tmp+4 cmp (34),y bne hu3 inc tmp+6 iny inc tmp+4 cpy tmp+5 bcc hu2 bcs hu5 hu3 inc tmp+3 bne hu1 zero ldx #-1 .byt $2c hu5 ldx tmp+3 inx lda #0 jsr axfac jmp numvar illq jmp $b248 using jsr $aefd jsr $ad8a ldx #0 bit $66 bpl pos dex pos stx pm lsr $66 ldx #pl jsr $bbd4 jsr $b7f1 stx maxlen jsr $b7f1 stx sign jsr $b7f1 stx taus jsr $aefd jsr $ad8a ldx #p2 jsr $bbd4 jsr $b7a1 stx after jsr $b7f1 stx fill jsr $b7f1 stx fish lda #$f9 ldy #$ba jsr $ba8c lda #p2 jsr $bf78 ldx #p2 jsr $bbd4 lda #pl jsr $ba28 jsr $b849 jsr $bccc jsr $bc0c lda #p2 jsr $bba2 jsr $bb12 ldy #0 jsr $bdec ldx #-1 po2 inx lda $100,x beq po1 cmp #"." bne po2 beq po3 po1 lda #0 sta $101,x po3 stx p2 ldy fish lda fische,y sta $100,x ldy #-1 po4 inx iny lda $100,x bne po4 po5 cpy after beq po6 bcs po7 lda #"0" sta $100,x iny inx bne po5 po7 jmp $b4d0 po6 lda #0 sta $100,x ldx #-1 su inx lda $100,x bne su ldy p2 stx pl bne nu1 nu9 lda $100,x sta $101,x dex bpl nu9 lda #"0" sta $100 inc pl nu1 lda taus beq nu3 lda #3 sta pl+1 nu2 dey bmi nu3 dec pl+1 bpl nu2 lda #3 sta pl+1 iny sty pl+2 ldy pl nu4 lda $100,y sta $101,y dey cpy pl+2 bcs nu4 inc pl iny lda #"." sta $100,y bne nu2 nu3 lda #32 ldx pm bpl pl1 lda #"-" pl1 ldx sign beq pl2 bpl pl3 ldx pl sta $100,x lda #0 sta $101,x inc pl bne pl2 pl3 ldx pl tay pl5 lda $100,x sta $101,x dex bpl pl5 inc pl sty $100 pl2 ldx pl cpx maxlen beq le1 bcc le2 jmp 42353 le2 ldy maxlen le3 lda $100,x sta $100,y dey dex bpl le3 lda fill le4 sta $100,y dey bpl le4 le1 ldx #-1 co2 inx lda $100,x bne co2 stx pl jsr strg lda pl jsr prepst st cpy pl beq ca lda $100,y sta ($62),y iny bne st ca rts maxlen =645 sign =659 pm =661 taus =662 fill =663 after =664 fish =665 pl =724 p2 =pl+5 fische brk .byte "., " varmem jsr $aefd jsr $ad8a jsr $b7f7 sty tmp sta tmp+1 jsr getfre transstr dey lda (34),y sta (tmp),y tya bne transstr rts memvar jsr $aefd jsr $b7eb lda 20 ldy 21 sta tmp sty tmp+1 txa pha pha jsr strg pla jsr prepst pla tay copytext dey lda (tmp),y sta ($62),y tya bne copytext rts search jsr getfre sta $b4 lda 34 ldy 35 sta $b5 sty $b6 lda $7a pha lda $7b pha vor jsr 115 cmp #"(" bne vor jsr $ad8a jsr $b7f7 sty elemnr sta elemnr+1 pla sta $7b pla sta $7a jsr kofi sta tmp+2 sty tmp+3 jsr kofi sta ende sty ende+1 lda #0 sta lenflag ldy $b4 sty prueflen dey lda ($b5),y cmp #"*" bne getdes dec lenflag dec prueflen getdes ldy #2 gd1 lda (tmp+2),y sta $fb,y dey bpl gd1 lda prueflen beq positiv cmp $fb php lda lenflag beq nostern plp bcs nextstr bcc pruefen nostern plp bne nextstr pruefen ldy #0 pr1 lda ($b5),y cmp #"?" beq nextchr cmp ($fc),y bne nextstr nextchr iny cpy prueflen bcc pr1 beq positiv nextstr lda tmp+2 clc adc #3 sta tmp+2 bcc nocy3 inc tmp+3 nocy3 inc elemnr bne nocy4 inc elemnr+1 nocy4 lda tmp+3 cmp ende+1 bcc getdes lda tmp+2 cmp ende bcc getdes beq getdes lda #0 tax beq sethi positiv ldx elemnr lda elemnr+1 sethi jsr axfac jmp numvar ende =661 elemnr =665 prueflen =664 lenflag =663 anf =181 flag =704 dir =180 sgc =659 hun =661 zeh =662 ein =663 puffz =664 xmerk =665 last =666 ebene =667 place .byt 102,0,3,7,11,15,20,24,28,32,36,40,43 table .byte "eiNzweIdreIvieRfuenFsecHsieBachTneuNzehN" .byte "elFzwoelFunDhunderTtausenDzwanziGdreissiG" .byte "minus\xa0SeN millioNen\xa0EnulL kommA" setv .byt %11000000 number jsr $aefd jsr $ad8a lda 102 sta sgc jsr $bc58 lda #189 tay jsr $bc5b bmi rechne lda sgc sta 102 jmp $b468 rechne ldx #0 stx puffz stx hun jsr $bbca jsr $bccc lda sgc bpl posi ldy #81 jsr text posi lda 97 bne nonull ldy #102 jsr text jmp satt nonull jsr $bddd ldx #0 ldy #-1 stx 256 stx ebene leas lda 256+1,x php and #15 sta 256+1,x plp beq nullp inx iny cpy #3 bcc leas inc ebene ldy #0 beq leas nullp ldx #1 cpy #1 beq zweiz tya beq einez dreiz ldy 256,x sty hun beq nohun jsr rein jsr korrh ldy #52 jsr text nohun inx zweiz inx einez lda 256,x sta ein dex lda 256,x sta zeh cmp #1 bne no12 lda ein beq iszehn ldy #11 cmp #1 beq iself cmp #2 bne no12 iny iself jsr rein jmp wars no12 ldy ein beq nil jsr rein jsr korre nil lda zeh beq wars cmp #1 bne norma iszehn ldy #10 jsr rein jmp wars norma ldy ein beq nahun pha ldy #49 jsr text pla nahun cmp #2 beq zwzig cmp #3 bne vierz ldy #73 .byt $2c zwzig ldy #66 jsr text jmp wars vierz ldy zeh jsr rein ldy #70 jsr text wars clv lda hun bne sperr lda zeh bne sperr lda ein beq nill cmp #1 bne sperr lda ebene cmp #2 bne sperr ldy #101 jsr text bit setv sperr lda ebene cmp #2 bne arm ldy #90 jsr text bvc skip ldy #100 .byt $2c skip ldy #98 jsr text arm cmp #1 bne nill ldy #59 jsr text nill inx inx dec ebene bmi satt jmp dreiz satt pla pla lda #$57 ldy #0 jsr $bba2 jsr $bddd ldx #0 suchnk inx lda 256,x beq naus cmp #"." bne suchnk ldy #106 jsr text suchvk inx lda 256,x beq naus and #15 pha ldy #100 jsr text pla tay jsr rein jsr korrn jmp suchvk naus jsr strg lda puffz jmp makest rein sty last lda place,y tay text stx xmerk ldx puffz drin lda table,y php and #127 sta latch,x inx iny plp bpl drin stx puffz ldx xmerk rts korre lda last cmp #1 bne noeis lda ebene bne noeis lda zeh bne noeis ns ldy #87 bne text korrh sec .byt $24 noeis clc php lda last cmp #7 beq sieb cmp #6 beq sex plp retn rts sieb ldy #88 .byt $2c sex ldy #87 plp bcs text lda zeh cmp #1 bne text rts korrn lda last cmp #1 beq ns bne korrh replace jsr pgetfre sta tmp+2 lda 34 ldy 35 sta tmp sty tmp+1 jsr $aefd jsr $ad9e bit $d bmi stg jsr $b1aa lda $64 bne illqu lda $65 jmp that stg jsr $b782 beq illqu ldy #0 lda (34),y that sta tmp+3 jsr getfre sta tmp+4 lda 34 ldy 35 sta tmp+5 sty tmp+6 ldx #0 ldy #0 repl cpy tmp+2 bcs done lda (tmp),y cmp tmp+3 bne norm sty tmp+7 ldy #0 dusch cpy tmp+4 bcs cont lda (tmp+5),y sta latch,x iny inx cpx #bul bcc dusch over jmp $a571 norm sta latch,x inx cpx #bul bcs over iny bne repl cont ldy tmp+7 iny bne repl done txa pha jsr strg pla jmp makest illqu jmp $b248 insert jsr pgetfre beq illqu cmp #bul bcs over sta tmp ldy #0 in1 lda (34),y sta latch,y iny cpy tmp bcc in1 jsr $b7f1 txa beq illqu dex stx tmp+1 jsr getfre sta tmp+2 ldx tmp+1 ldy #0 in2 cpy tmp+2 bcs in3 lda (34),y sta latch,x inx iny cpx tmp bcc in2 in3 jsr strg lda tmp jmp makest sort lda $7a pha lda $7b pha pre jsr 115 cmp #"(" bne pre jsr $ad8a jsr $b7f7 sty elemnr sta elemnr+1 pla sta $7b pla sta $7a jsr kofi sta anf sty anf+1 jsr kofi sta ende sty ende+1 jsr $b7f1 stx dir su1 lda anf ldy anf+1 sta tmp sty tmp+1 lda #0 sta flag su2 lda tmp+1 cmp ende+1 bcc su3 bne sub lda tmp cmp ende bcs sub su3 lda tmp clc adc #3 sta tmp+2 lda tmp+1 adc #0 sta tmp+3 ldy #2 su5 lda (tmp),y sta 2,y lda (tmp+2),y sta 164,y dey bpl su5 lda 2 cmp 164 bcc is2 lda 164 is2 sta 167 ldy #0 su6 lda (3),y cmp (165),y beq su7 php lda dir bpl up plp bcc su8 bne su9 up plp bcs su8 bne su9 su7 iny cpy 167 bcc su6 cpy 2 php lda dir bmi down plp beq su9 bne su88 down plp bne su9 su88 cpy 164 beq su9 su8 ldy #2 sty flag sua lda 2,y sta (tmp+2),y lda 164,y sta (tmp),y dey bpl sua su9 lda tmp+2 sta tmp lda tmp+3 sta tmp+1 jmp su2 sub lda flag beq suc jmp su1 suc rts